#ifndef DD_RayPlugDefine_H_
#define DD_RayPlugDefine_H_

#include "DDErrorDefine.h"
#include "DDSafeDelete.h"
#include "DDAutoDelete.h"

#include "DD_ComCfg.h"
#include "DD_RayCfg.h"
#include "DD_PlugCfg.h"

class RayPlug
{
public:
	RayPlug()
	{
	}
	virtual ~RayPlug()
	{
	}

public:
	//must init
	virtual int Initialize() = 0;
	//
	virtual int OpParam(void *pVoid = NULL) = 0;
	//

	virtual int SetComCfg(zkComCfg *pCfg) = 0;
	virtual int CheckConnect(int &nStatus) = 0;

	virtual int SetRayCfg(zkRayCfg *pCfg) = 0;

	virtual int SetRayCtrl(zkRayCtrl *pRayCtrl,BOOL bWaitToGo = FALSE) = 0;
	virtual int GetRayCtrl(zkRayCtrl **ppRayCtrl){return 0;}

};

//create plug interface,you must delete it 
#ifdef DDRAY_EXPORTS
#define DDRayPlug_API extern "C"  __declspec(dllexport) 
#else 
#define DDRayPlug_API extern "C"  __declspec(dllimport) 
#endif
DDRayPlug_API int CreatePlugMan(RayPlug **ppPlug);
typedef int (__cdecl * LPOPCREATEPLUGMAN)(RayPlug **ppPlug);

#endif